#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
int main()
{
    const char* msg1 = "hello stdout\n";
    write(1, msg1, strlen(msg1));
    
    printf("hello linux!\n");
    fprintf(stdout,"hello fprintf!\n");
    
    fork();
    return 0;
}



//int main()
//{
//    const char* msg1 = "hello stdout\n";
//    write(1, msg1, strlen(msg1));
//
//    const char* msg2 = "hello stderr\n";
//    write(2, msg2, strlen(msg2));
//
//    printf("hello linux!\n");
//    fprintf(stdout,"hello fprintf!\n");
//    
//    close(1);
//    return 0;
//}




//int main()
//{
//    close(1);//将标准输出关闭后，fprintf所打印的数据将会重定向到文件log.txt中
//    int fd = open("./log.txt", O_CREAT | O_WRONLY, 0644);
//    printf("fd：%d\n",fd);
//    fprintf(stdout,"hello linux!\n");
//    fprintf(stdout,"hello linux!\n");
//    fprintf(stdout,"hello linux!\n");
//    fprintf(stdout,"hello linux!\n");
//    fflush(stdout);//强制刷新缓冲区
//    close(fd);//关闭fd
//    return 0;
//}


//int main()
//{
//    int fd = open("./log.txt", O_RDWR);
//    if(fd < 0){
//        perror("open");
//        return 1;
//    }
//    dup2(fd, 0);//本来应该从键盘上读取数据，改成了从文件读取数据
//    char str[128];
//    scanf("%s\n", str);
//    printf("%s\n", str);
//    return 0;
//}

//int main()
//{
//    int fd = open("./log.txt", O_WRONLY);
//    if(fd < 0){
//        perror("open");
//        return 1;
//    }
//    dup2(fd, 1);//本来应该显示到显示器上的内容，被重定向到了文件中
//    printf("hello-world!\n");
//    printf("hello-linux!\n");
//    return 0;
//}

//int main()
//{
//    fprintf(stdout,"hello stdout!\n");
//    fprintf(stderr,"hello stderr!\n");
//    return 0;
//}

//int main()
//{
//    close(0);
//    int fd = open("./log.txt", O_RDONLY);
//    char buf[128];
//    while(~scanf("%s",buf)){
//        printf("%s\n",buf);
//    }
//    close(fd);
//    return 0;
//}

//int main()
//{
//    close(1);
//    int fd = open("./log.txt", O_CREAT | O_WRONLY | O_APPEND, 0644);
//    printf("fd:%d\n",fd);
//    printf("hello linux1\n");
//    printf("hello linux1\n");
//    printf("hello linux1\n");
//    printf("hello linux1\n");
//    return 0;
//    }

//int main()
//{
//    close(0);
//    close(2);
//    int fd1 = open("./log1.txt", O_CREAT | O_WRONLY, 0644);
//    int fd2 = open("./log2.txt", O_CREAT | O_WRONLY, 0644);
//    int fd3 = open("./log3.txt", O_CREAT | O_WRONLY, 0644);
//    int fd4 = open("./log4.txt", O_CREAT | O_WRONLY, 0644);
//    printf("fd1:%d\n",fd1);
//    printf("fd2:%d\n",fd2);
//    printf("fd3:%d\n",fd3);
//    printf("fd4:%d\n",fd4);
//    return 0;
//}


//int main()
//{
//    int fd = open("./log1.txt",O_WRONLY | O_CREAT, 0644);
//    if(fd < 0){
//        perror("open");
//        return -1;
//    }
//    printf("fd：%d\n",fd);
//    close(fd);
//    return 0;
//}

//int main() {
//    int fd = open("./log1.txt",O_RDONLY);
//    if(fd < 0){
//        perror("open");
//        return -1;
//    }
//    char buffer[128];
//    ssize_t ss = read(fd, buffer, sizeof(buffer) - 1);
//    if(ss > 0){
//        buffer[ss] = 0;
//    }
//    close(fd);
//    printf("%s\n",buffer);
//}
//int main()
//int main()
//    int fd = open("log1.txt", O_WRONLY | O_CREAT, 0644);
//    if(fd < 0){
//       perror("open");
//       return 1;
//    }
//    const char* msg = "hello linux!\n";
//    int count = 5;
//    while(count--){
//        write(fd, msg, strlen(msg));
//    }
//    close(fd);
//    return 0;
//}
































//int main()
//{
//    FILE* fp = fopen("./log.txt", "r");
//    if(NULL == fp){
//        perror("fopen");
//        return 1;
//    }
//    char message[128];
//    int count = 5;
//    while(count--){
//        fgets(message, sizeof(message), fp);
//        printf("%s",message);
//
//    }
//}



//    int count = 5;
//    while(count--){
//        const char* message = "hello linux!\n";
//        fputs(message, fp);//向文件中写入字符串
//    }
//    fclose(fp);//关闭文件
//}




